from _typeshed import Incomplete
from typing import Any

class _BooleanConfigOption:
    name: Incomplete
    attr_name: Incomplete
    def __init__(self, name: str) -> None: ...
    def __get__(self, instance: Any, owner: Any) -> bool: ...
    def __set__(self, instance: Any, value: bool) -> None: ...

class DummyLogger:
    def __init__(self, *vargs) -> None: ...
    def debug(self, *vargs, **kwargs) -> None: ...
    def trace(self, *vargs, **kwargs) -> None: ...

class OutputLogger:
    file: Incomplete
    trace_level: Incomplete
    def __init__(self, file: Incomplete | None = None, trace_level: bool = False) -> None: ...
    def debug(self, fmtstr, *args) -> None: ...
    def trace(self, fmtstr, *args) -> None: ...

class H2Configuration:
    client_side: Incomplete
    validate_outbound_headers: Incomplete
    normalize_outbound_headers: Incomplete
    split_outbound_cookies: Incomplete
    validate_inbound_headers: Incomplete
    normalize_inbound_headers: Incomplete
    logger: Incomplete
    def __init__(self, client_side: bool = True, header_encoding: bool | str | None = None, validate_outbound_headers: bool = True, normalize_outbound_headers: bool = True, split_outbound_cookies: bool = False, validate_inbound_headers: bool = True, normalize_inbound_headers: bool = True, logger: DummyLogger | OutputLogger | None = None) -> None: ...
    @property
    def header_encoding(self) -> bool | str | None: ...
    @header_encoding.setter
    def header_encoding(self, value: bool | str | None) -> None: ...
